package dryven.util.json.dryvenjson;

import dryven.model.di.DependencyService;
import dryven.util.json.dryvenjson.encoders.BooleanEncoder;
import dryven.util.json.dryvenjson.encoders.CollectionEncoder;
import dryven.util.json.dryvenjson.encoders.DateEncoder;
import dryven.util.json.dryvenjson.encoders.EnumEncoder;
import dryven.util.json.dryvenjson.encoders.NumberEncoder;
import dryven.util.json.dryvenjson.encoders.ObjectEncoder;
import dryven.util.json.dryvenjson.encoders.StringEncoder;
import dryven.util.ArrayIterable;

public class DryvenJSONEncoder extends JSONCompositeEncoder {
	
	public DryvenJSONEncoder(FieldPolicy fieldPolicy, boolean avoidNull) {
		super(fieldPolicy, initEncoders(),avoidNull);
	}
	
	private static Iterable<JSONTypeEncoder> initEncoders() {
		JSONTypeEncoder[] encoders = new JSONTypeEncoder[]{
			new BooleanEncoder(),
			new DateEncoder(),
			new NumberEncoder(),
			new StringEncoder(),
			new CollectionEncoder(),
			new EnumEncoder(),
			new ObjectEncoder()
		};
		return new ArrayIterable<JSONTypeEncoder>(encoders);
	}
}
